#ifndef _CAMERA_H
#define _CAMERA_H

#include <list>

#include "math/vec4.h"
#include "math/vec3.h"
#include "math/mat4x4.h"

#include "Component.h"

namespace TG
{
	class Camera : public Component
	{
	private:
		vec3 position;
		vec3 target;
		vec3 up;

		vec4 _viewport;

	public:
		short depth = 0;
		float fov;
		float nearPlane;
		float farPlane;
		float aspect;

		Camera();
		virtual ~Camera();

		void setTarget(vec3 &target);

		void setUp(vec3 &up);

		void setPosition(vec3 &position);

		mat4x4 getViewMatrix();
		mat4x4 getProjMatrix();

		vec4 getViewport();

		vec3 forward();

		bool operator<(const Camera &c);
	};
}
#endif